Projekt Pronal Projekt Pronal

Kazalo:
Sofinasiranje projekta
Starejši - učbenik...
Starejši - zbirka nalog...
Tekmovanja...
Tekmovanja - dopolni...
Tekmovanja - popravi...
Tekmovanja - Parsons
rtk 1988
rtk 1996
rtk 1998
rtk 1999
rtk 2000
rtk 2001
rtk 2002
rtk 2004
rtk 2006
rtk 2007
rtk 2008
rtk 2009
rtk 2014
rtk 2016
rtk 2017
rtk 2018
rtk 1988

rtk 1988


1988.1.2

1. podnaloga

Naloga

Programu so se premešale vrstice!

besede.reverse()
besede = input('').split()
print(" ".join(besede))

Uredi vrstice, da bo program prebral vrstico z nekaj besedami, ki so ločene z enim ali več presledki, in bo besede izpiše v obratnem vrstnem redu.

Vhodni podatki

Vrstica z besedilom, ki vsebuje besede ločene z vsaj enim presledkom.

Izhodni podatki

Izpiši eno samo vrstico z obrnjenim vrstnim redom besed.

Primer

Vhod
>>> 'Kako zanimiv    primer!  '
Izhod
'primer! zanimiv Kako'

Uradna rešitev

besede = input('').split()
besede.reverse()
print(" ".join(besede))

1988.2.2

1. podnaloga

Uporabniki nekega programa so se pritožili, da so ukazne besede predolge. Zato želimo vpeljati možnost okrajševanja ukazov. Ukaz dodaj naj bi bilo na primer mogoče okrajšati na dod, doda ali dodaj; ne pa na do (prekratka okrajšava) ali dodamo (napačni znaki v nizu). Okrajšavo opišemo tako, da z zvezdico v modelu ukazne besede označimo, do kam sega obvezni del ukaza; v našem primeru dod*aj. Okrajšan ukaz mora biti dolg najmanj en znak(v modelu ukazne besede zvezdica nikoli ne stoji na prvem mestu).

Naloga (Uredi vrstice)

Želeni program že imamo, vendar se je pri shranjevanju nekaj zalomilo. Vrstice so se pomešale in sedaj program ne deluje.

    if iModel == '*':
    if iPreverjalni == ' ':
    elif iModel != iPreverjalni:
seUjema = True
cezZvezdico = False
        cezZvezdico = True
zamik = 0 #zvezdico bomo preskočili
i = 0
while seUjema:
    iModel = model[i + zamik]
    iPreverjalni = preverjalni[i]
        zamik = 1
        iModel = model[i + zamik]
        break
        seUjema = False
    i += 1
print(seUjema and cezZvezdico)
preverjalni = input('')
model = input('')

Popravi vrstice tako, da bo program deloval pravlino. Zamiki vrstic niso nujno pravilni.

Vhodni podatki

V prvi vrstici je model ukazne besede, ki se konča z vsaj enim presledkom. V drugi vrstici je preverjalni niz, ki se zaključi z vsaj enim presledkom.

Izhodni podatki

Program izpiše True, če prverjalni niz ustreza modelu ukazne besede in False, če ne.

Primer

Vhod
>>> 'abc*de  '
>>> 'abcd '
Izhod
'True'

Uradna rešitev

model = input('')
preverjalni = input('')
seUjema = True
cezZvezdico = False
zamik = 0 #zvezdico bomo preskočili
i = 0
while seUjema:
    iModel = model[i + zamik]
    iPreverjalni = preverjalni[i]
    if iModel == '*':
        zamik = 1
        iModel = model[i + zamik]
        cezZvezdico = True
    if iPreverjalni == ' ':
        break
    elif iModel != iPreverjalni:
        seUjema = False
    i += 1
print(seUjema and cezZvezdico)

1988.3.2

1. podnaloga

Naloga (Zamenjaj vrstice)

Imamo program, ki prešteje, kolikokrat se v nekem nizu znakov pojavi nek drug podniz. Pri tem ni nujno, da znaki drugega niza v prvem stoje zaporedoma, ujemati se mora le vrstni red. Vendar pa ima program prmešane vrstice.

podniz = vhodni[1]
'''funkcija poišče kolikokrat se podniz pojavi v nizu'''
stPojavitev += isciPodniz(niz[indeks + 1:], podniz[1:])
stPojavitev = 0
stPojavitev += 1
return stPojav
if niz == '':
return stPojavitev
delniPodniz = podniz[0]
print(isciPodniz(niz, podniz))
for indeks in range(len(niz)):
if niz[indeks] == delniPodniz:
return stPojavitev
vhodni = input('').split()
niz = vhodni[0]
def isciPodniz (niz, podniz):
if podniz == '':

Uredi vrstice, da bo program deloval pravilno (zamikanje ni nujno pravilno).

Vhodni podatki

Ena vrstica v kateri sta dana niza ločena s presledkom. Prvi je niz v katerem iščemo, drugi pa je podniz, ki ga iščemo v prvem nizu.

Izhodni podatki

Izpiši eno samo število -- število pojavitev podniza v nizu.

Primer

Vhod
>>> 'matematika mati'
Izhod
4

Uradna rešitev

def isciPodniz (niz, podniz):
    '''funkcija poišče kolikokrat se podniz pojavi v nizu'''
    stPojavitev = 0
    if podniz == '':
        stPojavitev += 1
        return stPojavitev
    if niz == '':
        return stPojavitev
    delniPodniz = podniz[0]
    for indeks in range(len(niz)):
        if niz[indeks] == delniPodniz:
            stPojavitev += isciPodniz(niz[indeks + 1:], podniz[1:])
    return stPojavitev


vhodni = input('').split()
niz = vhodni[0]
podniz = vhodni[1]
print(isciPodniz(niz, podniz))

1988.1.4

1. podnaloga

Naloga (Uredi vrstice)

Imamo funkcijo, ki prešteje popolne kvadrate od 2 do vključno prebranega števila a, vendar so se vrstice premešale.

def funkcija(a):
    d = 0
        q = k/p
        p = 1
                d += 1
            if (p == q) and (k%p == 0):
    for k in range(2, a + 1):
        while p < q:
            q = k/p
            p += 1
    return d

Uredi vrstice, da bo program deloval pravilno.

Vhodni podatki

Funkcija sprejme en podatek $a$, ki je naravno število večje ali enako od $2$.

Omejitve vhodnih podatkov
  • $2 \leq a$

Izhodni podatki

Funkcija vrne število $d$, ki je enako številu popolnih kvadratov števil med $2$ in $a$.

Primer

Vhod
>>> funkcija(100)
Izhod
9

Uradna rešitev

def funkcija(a):
    d = 0
    for k in range(2, a + 1):
        p = 1
        q = k/p
        while p < q:
            p += 1
            q = k/p
            if (p == q) and (k%p == 0):
                d += 1
    return d
Mesto objave ob koncu projekta 15.9.2018